package com.backend.system.service.manage;

import com.backend.system.beans.DeleteReq;
import com.backend.system.beans.menu.GrantMenusToRoleReq;
import com.backend.system.beans.menu.MenuAddOrUpdateReq;
import com.backend.system.beans.menu.MenuDisableOrEnableReq;
import com.backend.system.common.enums.ActionTypeEnum;
import com.backend.system.common.processor.ProcessorContext;
import com.backend.system.util.ManagerUtil;

/**
 * 菜单管理
 *
 * @author backend-manage
 */
public class MenuManage {

    /**
     * 删除菜单-（若包含子级菜单，不能删除）
     *
     * @param req 请求参数
     * @return 响应
     */
    public static Boolean delete(DeleteReq req) {
        ProcessorContext<DeleteReq> context = new ProcessorContext<>();
        context.setData(req);
        context.setAction(ActionTypeEnum.MENU_DELETE);
        return ManagerUtil.handle(context);
    }

    /**
     * 给角色分配菜单
     *
     * @param req 请求参数
     * @return 响应
     */
    public static Boolean grantMenus(GrantMenusToRoleReq req) {
        ProcessorContext<GrantMenusToRoleReq> context = new ProcessorContext<>();
        context.setData(req);
        context.setAction(ActionTypeEnum.ROLE_GRANT_MENUS);
        return ManagerUtil.handle(context);
    }

    /**
     * 禁用或启用菜单
     *
     * @param req 请求参数
     * @return 响应
     */
    public static Boolean disableOrEnable(MenuDisableOrEnableReq req) {
        ProcessorContext<MenuDisableOrEnableReq> context = new ProcessorContext<>();
        context.setData(req);
        context.setAction(ActionTypeEnum.MENU_DISABLE_OR_ENABLE);
        return ManagerUtil.handle(context);
    }

    /**
     * 新增或修改菜单
     *
     * @param req 请求参数
     * @return 响应
     */
    public static Boolean addOrUpdate(MenuAddOrUpdateReq req) {
        ProcessorContext<MenuAddOrUpdateReq> context = new ProcessorContext<>();
        context.setData(req);
        context.setAction(ActionTypeEnum.MENU_ADD_OR_UPDATE);
        return ManagerUtil.handle(context);
    }
}
